package Main;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

import Personajes.Mario;
import Graficos.Mapa_Grafico;
import Mapa.*;

public class Juego extends javax.swing.JFrame {
	private Mapa_Logico mapa;
	private Mapa_Grafico mapaG;
	private Mario mario;
	private boolean saltoPresionado, izqPresionada, derPresionada;

	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				Juego inst = new Juego();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}
	
	public Juego() {
		super();
		initGUI();
		//this.setExtendedState(this.MAXIMIZED_BOTH);	
	}
	
	private void initGUI() {
		try {
			saltoPresionado = false;
			setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
			getContentPane().setBackground(new java.awt.Color(128,128,255));
			this.setSize(1024, 700);
			this.setPreferredSize(new Dimension(1024,700));
			this.setResizable(false);
			this.setMinimumSize(new Dimension(1024,700));
			pack();
			iniciar();
			addKeyListener(new OyenteMario());
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/**Carga los los objetos al juego. */
	private void iniciar(){
		mapa = new Mapa_Logico();
		mapaG = new Mapa_Grafico(mapa);
		mario = mapa.obtenerMario();
		getContentPane().add(mapaG,BorderLayout.CENTER);
	}
	
	private class OyenteMario extends KeyAdapter{
		public void keyPressed(KeyEvent e){
			if(e.getKeyCode() == KeyEvent.VK_LEFT){
				if(!izqPresionada){
					izqPresionada = true;
					mario.setIzquierda(true);
				}
			}
			else if(e.getKeyCode() == KeyEvent.VK_RIGHT){
				if(!derPresionada){
					derPresionada = true;
					mario.setDerecha(true);
				}
			}
			if(e.getKeyCode() == KeyEvent.VK_UP){
				if(!saltoPresionado){
					saltoPresionado = true;
					mario.setSalto(true);
				}
			}
		}
		
		public void keyReleased(KeyEvent e){
			if(e.getKeyCode() == KeyEvent.VK_LEFT){
				izqPresionada = false;
				mario.setIzquierda(false);
			}
			else if(e.getKeyCode() == KeyEvent.VK_RIGHT){
				derPresionada = false;
				mario.setDerecha(false);
			}
			if(e.getKeyCode() == KeyEvent.VK_UP){
				saltoPresionado = false;
				mario.setSalto(false);
			}
			if(e.getKeyCode() == KeyEvent.VK_Z){
				mario.disparar();
			}
			if(e.getKeyCode() == KeyEvent.VK_X){
				mario.dispararBombaNuclear();
			}
		}
	}
	
}
